package com.drug.mingkang.service;

import com.drug.mingkang.model.AuditRecord;
import com.drug.mingkang.model.ImmSell;
import com.drug.mingkang.model.vo.EChartsVo;
import com.drug.mingkang.model.vo.SalesStatisticsVo;
import com.drug.mingkang.utils.ResponseMessage;

import javax.servlet.http.HttpSession;
import java.util.List;
import java.util.Map;

/**
 * (ImmSell)表服务接口
 *
 * @author wutao
 * @since 2020-08-11 12:00:14
 */
public interface ImmSellService {

    /**
     * 通过ID查询单条数据
     *
     * @param sellId 主键
     * @return 实例对象
     */
    ImmSell queryById(String sellId);

    /**
     * 查询多条数据
     * queryAllByLimit 零售
     * queryAllByLimits 批发
     * @return 对象列表
     */
    List<ImmSell> queryAllByLimit(ImmSell immSell, String companyId);
    List<ImmSell> queryAllByLimits(ImmSell immSell, String companyId,String status);

    /**
     * 统计
     * countId零售
     * countIds批发
     * @return
     */
    int countId(ImmSell immSell, String companyId);
    int countIds(ImmSell immSell, String companyId);

    /**
     * 新增数据
     *
     * @param immSell 实例对象
     * @return 实例对象
     */
    ImmSell insert(ImmSell immSell);

    /**
     * 修改数据
     *
     * @param immSell 实例对象
     * @return 实例对象
     */
    ImmSell update(ImmSell immSell);

    /**
     * 通过主键删除数据
     *
     * @param sellId 主键
     * @return 是否成功
     */
    int deleteById(String sellId);

    /**
     * 根据年份查询总(分)公司销售前十销售量药品
     * @param page    页
     * @param limit     条
     * @param salesYear    年份
     * @param companyId     分公司Id
     * @return
     */
    List<EChartsVo> selectMarketFrontShi(Integer page, Integer limit, String salesYear, String companyId);

    /**
     * 根据年份查询分公司 销售总金额与成本总金额对比图 与  销售总金额及毛利对比图 (实现销售量折线统计图)
     * @param salesYear  年份
     * @param companyId   分公司Id
     * @return
     */
    Map<String, Object> findTotalCostAllPriceAndSalesProfit(String salesYear, String companyId);

    /**
     * 根据销售ID修改状态
     * @param sellId
     * @return
     */
    int updateStatus(String sellId);

    /**
     *  根据年份查询(分)公司 销售量数排行表(每年每月的总销售量)
     * @param salesStatisticsVo  销售量数排行表(每年每月的总销售量) Vo
     * @param status 状态（1 实现销量折线统计图的方法 2 实现销售排行统计表）
     * @return
     */
    Map<String, Object> findAllSalesStatistics(SalesStatisticsVo salesStatisticsVo,  String status);

    /**
     * 分公司批发审核
     * @param immSell 分公司批发
     * @param auditRecord 审核表
     * @param session 当前会话
     * @return
     */
    ResponseMessage updateWholesaleIsva(ImmSell immSell, AuditRecord auditRecord, HttpSession session);
}